home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / gpen32k / source / lib / osrc / hsvrgb.c < prev    next >
Encoding:
Text File  |  1994-06-01  |  827 b   |  34 lines

  1. /*
  2.     HSV to RGB 変換関数
  3.                         おこめ
  4.  
  5.     h:(0,1535) s,v:(0,255)
  6.     ret:24bitGRB
  7.  
  8.     参考:Oh!FM 1989.9  特集
  9.          爆走!!  趣味のC言語ライブラリ
  10.          Part 6        あれやこれやの
  11.                      MISCライブラリ    歩野零一
  12. */
  13.  
  14. int HSVtoRGB(int h, int s, int v)
  15. {
  16.     int i,f, m,n,k;
  17.     int r,g,b;
  18.     i = (h / 256) % 6 ;    f = ( h % 256 ) ;
  19.     m = ( (v+1) * ( 255 - s ) ) /256 ;
  20.     n = ( (v+1) * ( 255 - ( (s+1) * f ) /256 ) ) /256 ;
  21.     k = ( (v+1) * ( 255 - ( (s+1) * ( 255 - f ) ) /256 )) /256 ;
  22.  
  23.     switch (i)    {
  24.         case 0:    r = v ; g = k ; b = m ; break ;
  25.         case 1:    r = n ; g = v ; b = m ; break ;
  26.         case 2:    r = m ; g = v ; b = k ; break ;
  27.         case 3:    r = m ; g = n ; b = v ; break ;
  28.         case 4:    r = k ; g = m ; b = v ; break ;
  29.         case 5:    r = v ; g = m ; b = n ; break ;
  30.         default:    return ( -1 ) ;
  31.     }
  32.     return ( (g<<16) + (r<<8) + b );
  33. }
  34.